#ifndef prs_FrmStyleRule_H
#define prs_FrmStyleRule_H

#include "prs_FrmFunc.h"
#include "prs_FrmPanelStyle.h"
#include "prs_FrmStringStyle.h"
#include "prs_FrmIntegerStyle.h"
#include "prs_FrmDoubleStyle.h"
#include "prs_FrmDateStyle.h"

#include "prs_FrmButtonStyle.h"
#include "prs_FrmLineStyle.h"
#include "prs_FrmParaStyle.h"
#include "prs_FrmColStyle.h"
#include "prs_FrmRowStyle.h"
#include "prs_FrmSplitterStyle.h"
#include "prs_FrmScrollBarStyle.h"
#include "prs_FrmPageControlStyle.h"
#include "prs_FrmFrameStyle.h"
#include "prs_FrmTableStyle.h"
#include "prs_FrmImageStyle.h"
#include "prs_FrmParaEditStyle.h"

namespace prs {

///////////////////////////////////////////////////////////////////////////////

struct TRuleFrmStyle : public snt::TRule
{
  TRuleFrmStyle(
    snt::text::TContext &Context,
    svl::TVariant &VParentNode,
    TRuleSetNodeIdNecessarily &RSetNodeIdNecessarily,
    TRuleFrmGeom &RFrmGeom
  );
  
private:  
  bool FSetParentStyle(snt::text::TIdent::TFuncClosureDoEntryParams &Params);
  //
  svl::TVariant &vParentNode,vIdent;
  snt::TAlter A;
  snt::TRule  RParentStyle;
  TRuleFrmStyleState rStyleState;
  TRuleFrmStringStyle RString;
  TRuleFrmIntegerStyle RInteger;
  TRuleFrmDoubleStyle RDouble;
  TRuleFrmDateStyle RDate;
  TRuleFrmPanelStyle RPanel;
  TRuleFrmButtonStyle RButton;
  TRuleFrmLineStyle RLine;
  TRuleFrmParaStyle RPara;
  TRuleFrmColStyle RCol;
  TRuleFrmRowStyle RRow;
  TRuleFrmRowExpandStyle RRowExpand;
  TRuleFrmVSplitterStyle RVSplitter;
  TRuleFrmHSplitterStyle RHSplitter;
  TRuleFrmVScrollBarStyle RVScrollBar;
  TRuleFrmHScrollBarStyle RHScrollBar;
  TRuleFrmFrameStyle	RFrame;
  TRuleFrmPageControlStyle RPageControl;
  TRuleFrmPageStyle RPage;
  TRuleFrmTableStyle RTable;
  TRuleFrmImageStyle RImage;
  TRuleFrmParaEditStyle RParaEdit;
};

///////////////////////////////////////////////////////////////////////////////
}

#endif
